使用jconsole、jvisualvm查看线程运行状态、内存实时监控 | 您所在的位置:网站首页 › linux 查看运行级别 › 使用jconsole、jvisualvm查看线程运行状态、内存实时监控 |
目录 一、jconsole 二、jvisualvm 引言:在实际开发中由于锁的使用不当可能回造成死锁的现象,那么该怎么判断是否发生死锁了呢?在这里介绍两个jdk提供的工具 首先我们先手动创建一个简单的死锁环境运行成功后,看下面推荐的两个jdk提供的工具 import java.util.concurrent.TimeUnit; public class text { static Object lockA = new Object(); static Object lockB = new Object(); public static void main(String[] args) throws InterruptedException { new Thread(()->{ synchronized (lockA){ try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (lockB){ } } }).start(); new Thread(()->{ synchronized (lockB){ try { TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (lockA){ } } }).start(); } } 一、jconsole1、在cmd中输入jconsole,点击回车后回弹出相关的框框 2、点击本地连接,然后要查看的进程,然后点击连接 3、在弹出的页面中点击不安全连接 4、点击检测死锁 5、点击相关的线程查看信息,可以定位到java代码可能发生死锁的位子 1、在cmd中直接输入jvisualvm,点击回车会弹出框框 2、选择要查看的进程双击 3、双击之后会展示进程相关信息,这时候点击线程,查看线程信息 4、如果存在死锁,会出现下图的样式,然后点击红色框框中的线程Dump 5、点击线程Dump之后进入新页面拖到最底下就能看到线程死锁相关信息 总结:jdk提供的这两款可视化工具不仅能够给我们排查死锁情况,还能让我们实时监控内存的使用,很牛就是了 |
CopyRight 2018-2019 实验室设备网 版权所有 |